package design.patterns.mediator;


/**
 * desc     : 抽象同事代码
 * dateTime : 2020-06-14 17:37
 *
 * @author wwchen
 */
public abstract class Colleague {
    private Mediator mediator;

    /**
     * 接收一个调停着
     * @param mediator
     */
    public Colleague(Mediator mediator) {
        this.mediator = mediator;
    }

    /**
     * 提供调停着对象
     * @return
     */
    public Mediator getMediator() {
        return mediator;
    }

    /**
     * 行动方法，由子类实现，一个同事对象在得知其他对象有变化时，会执行这个操作
     */
    public abstract void action();

    /**
     * 示意性商业方法，调用此方法可以改变对象内部状态
     */
    public void change() {
        mediator.colleagueChange(this);
    }
}
